package main

import (
	"fmt"
	"math/rand"
	"time"
)

//
//func test(a int, b string, c bool) {
//	fmt.Println(a, b, c)
//}

func main() {
    fmt.Println("================================作业一=================================")
    // 作业1，,99乘法表
    for i := 1; i < 10; i++ {
        for y := 1; y <= i; y++ {
            fmt.Printf("%d*%d=%d ", y, i, y*i)
        }
        fmt.Println("")
    }
    fmt.Println("================================作业二================================")
    // 作业2 随机生成20以内的20个非0正整数，打印出来。对生成的数值，第单数个（不是索引）累加求和，第
    //偶数个累乘求积。打印结果
    // 根据当前时间（纳秒级）自定义随机数种子
    source := rand.NewSource(time.Now().UnixNano())
    r := rand.New(source)
    // 定义奇数和偶数的初值
    var oushu int = 1
    var jishu int = 0
    // 循环20次
    for i := 0; i < 20; i++ {
        // 生成大于0 且20以内的随机数
        randNum := r.Intn(20) + 1
        //fmt.Printf("%v  %[1]T\n", randNum)
        // 判断当前的随机数是奇数位，还是偶数位
        if i%2 == 0 {
            oushu *= randNum
        } else {
            jishu += randNum
        }
    }
    // 打印最终值
    fmt.Println("20以内非0随机数，奇数位相加，偶数位相乘结果为：", "偶数乘积：", oushu, "奇数和:", jishu)
    fmt.Println("================================作业三================================")
    // 打印100以内的斐波那契数列   1  1  2  3  5  8   13  21  34  规律是前两项相加得后一项，所以，m+n=c
    //如1+1=2然后将n和m调换，n此时为1，再将c和m调换，此时m=2就可以形成一个公式，代码如下：
    // 定义变量，初始值
    var m int = 0
    var n int = 1
    var c int = 1
    fmt.Println("100以内斐波那契数列：")
    for i := 1; i <= 100; i++ {
        c = m + n
        n = m
        m = c
        if c >= 100 {
            break
        }
        fmt.Println(m)
    }

}

// 批改意见
// 1. 随机数中，奇偶数位判断和题目要求的刚好相反；